package com.sud.demo.service;

import com.sud.demo.model.User;
import com.sud.framework.system.httpUtil.Result;
import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import java.io.InputStream;
import java.util.List;

/**
 * 功能：
 * 作者：SUD
 * 时间：2018/6/26 14:07
 */
@Component
@Path(value = "/user")
@Produces({MediaType.APPLICATION_JSON_VALUE})
public interface UserService {
    /**
     * 保存user
     * @param user
     * @return
     */
    @POST
    @Consumes(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @Path("/saveUser")
    Result saveUser(User user);

    /**
     * 保存user集合
     * @param list
     * @return
     */
    @POST
    @Consumes(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @Path("/saveUserList")
    Result saveUserList(List<User> list);
    /**
     * 删除user
     * @param userId
     * @return
     */
    @DELETE
    @Path("/removeUser")
    Result removeUser(@QueryParam(value = "userId")Integer userId);
    /**
     * 编辑user
     * @param user
     * @return
     */
    @POST
    @Consumes(MediaType.APPLICATION_JSON_UTF8_VALUE)
    @Path("/updateUser")
    Result updateUser(User user);

    /**
     * 查询user
     * @param userId
     * @return
     */
    @GET
    @Path("/getUserList")
    Result getUserList(@QueryParam(value = "userId")Integer userId);

    /**
     * 分页查询数据
     * @param userName
     * @param currentPage
     * @param pageSize
     * @param sort
     * @return
     */
    @GET
    @Path("/getUserPage")
    Result getUserPage(@QueryParam(value = "userName")String userName,
                       @QueryParam("currentPage")Integer currentPage,
                       @QueryParam("pageSize")Integer pageSize,
                       @QueryParam("sort")String sort);
    /**
     * 文件上传
     * @param fileInputStream
     * @param request
     * @return
     */
    @POST
    @Path("uploadFile")
    @Consumes({MediaType.MULTIPART_FORM_DATA_VALUE})
    Result uploadFile(@FormDataParam("file") InputStream fileInputStream, @FormDataParam("file") FormDataContentDisposition disposition, @Context HttpServletRequest request);
}
